home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc691.txt < prev    next >
Text File  |  1994-08-01  |  33KB  |  715 lines

  1.  
  2. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  3. One More Try on the FTP
  4.  
  5.  
  6.  
  7.                                                         Brian Harvey
  8.                                                                SU-AI
  9. Re: File Transfer Protocol                              May 28, 1975
  10. Ref: RFC 354, 385, 414, 448, 454, 630, 542, 640                        1
  11.  
  12.                        One More Try on the FTP                         2
  13.  
  14.    This is a slight revision of RFC 686, mainly differing in the
  15.    discussion of print files.  Reading several RFCs that I (sigh)
  16.    never heard of before writing 686 has convinced me that although
  17.    I was right all along it was for the wrong reasons.  The list of
  18.    reply codes is also slightly different to reflect the four lists
  19.    in RFCs 354, 454, 542, and 640 more completely.  Let me also
  20.    suggest that if there are no objections before June 1, everyone
  21.    take it as official that HELP should return 200, that SRVR should
  22.    be used as discussed below, and that "permanent" 4xx errors be
  23.    changed to 5xx.  And thanks to Jon Postel who just spent all
  24.    evening helping me straighten this all out.                        2a
  25.  
  26.    Aside from a cry of anguish by the site responsible for the
  27.    security hassle described below, I've only had one comment on
  28.    this, which was unfavorable but, alas, unspecific.  Let me just
  29.    say, in the hopes of avoiding more such, that I am not just
  30.    trying to step on toes for the fun of it, and that I don't think
  31.    the positive changes to FTP-1 proposed here are necessarily the
  32.    best possible thing.  What they are, I think, is easily doable.
  33.    The great-FTP-in-the-sky isn't showing any signs of universal
  34.    acceptability, and it shouldn't stand in the way of solving
  35.    immediate problems.                                                2b
  36.  
  37.                       Leaving Well Enough Alone                        3
  38.  
  39. I recently decided it was time for an overhaul of our FTP user and
  40. server programs.  This was my first venture into the world of
  41. network protocols, and I soon discovered that there was a lot we
  42. were doing wrong--and a few things that everyone seemed to be doing
  43. differently from each other.  When I enquired about this, the
  44. response from some quarters was "Oh, you're running Version 1!"        4
  45.  
  46. Since, as far as I can tell, all but one network host are running
  47. version 1, and basically transferring files OK, it seems to me that
  48. the existence on paper of an unused protocol should not stand in the
  49. way of maintaining the current one unless there is a good reason to
  50.  
  51.  
  52.  
  53.  
  54.  
  55.                                    1
  56.  
  57. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  58. One More Try on the FTP
  59.  
  60.  
  61.  
  62. believe that the new one is either imminent or strongly superior or
  63. both.  (I understand, by the way, that FTP-2 represents a lot of
  64. thought and effort by several people who are greater network experts
  65. than I, and that it isn't nice of me to propose junking all that
  66. work, and I hereby apologize for it.)  Let me list what strike me as
  67. the main differences in FTP-2 and examine their potential impact on
  68. the world.                                                             5
  69.  
  70.    1.  FTP-2 uses TELNET-2.  The main advantage of the new Telnet
  71.    protocol is that it allows flexible negotiation about things like
  72.    echoing.  But the communicators in the case of FTP are computer
  73.    programs, not people, and don't want any echoing anyway.  The
  74.    argument that new hosts might not know about old Telnet seems an
  75.    unlikely one for quite some time to come; if TELNET-2 ever does
  76.    really take over the world, FTP-1 could be implemented in it.      5a
  77.  
  78.    2.  FTP-2 straightens out the "print file" mess.  First of all,
  79.    there are two separate questions here: what command one ought to
  80.    give to establish a print file transfer, and which end does what
  81.    sort of conversion.  For the second question, although all of the
  82.    FTP-1 documents are confusing on the subject, I think it is
  83.    perfectly obvious what to do: if the user specifies, and the
  84.    server accepts, an ASCII or EBCDIC print file transfer parameter
  85.    sequence, then the data sent over the network should contain
  86.    Fortran control characters.  That is, the source file should
  87.    contain Fortran controls, and should be sent over the net as is,
  88.    and reformatted if necessary not by the SERVER as the protocol
  89.    says but by the RECIPIENT (server for STOR, user for RETR). (The
  90.    "Telnet print file" non-issue will be debunked below.)
  91.    As a non-Fortran-user I may be missing something here but I don't
  92.    think so; it is just like the well-understood TYPE E in which the
  93.    data is sent in EBCDIC and the recipient can format it for local
  94.    use as desired.  One never reformats a file from ASCII to EBCDIC
  95.    at the sending end.  Perhaps the confusion happened because the
  96.    protocol authors had in mind using these types to send files
  97.    directly to a line printer at the server end, and indeed maybe
  98.    that's all it's good for and nobody's user program will implement
  99.    TYPE P RETR.                                                       5b
  100.  
  101.    As for the specific commands used to negotiate such a transfer,
  102.    there may currently be some confusion because the most recent
  103.    FTP-1 document on the subject (RFC 454) invents a new command,
  104.    FORM, which is not in general use as far as I know.  (Most of my
  105.  
  106.  
  107.  
  108.  
  109.  
  110.                                    2
  111.  
  112. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  113. One More Try on the FTP
  114.  
  115.  
  116.  
  117.    experiments have been on PDP-10s; perhaps other systems have
  118.    adopted this command.)  FTP-2 puts the format argument in the
  119.    TYPE command as a second argument. Either way, using a
  120.    two-dimensional scheme to specify the combinations of
  121.    ASCII/EBCDIC and ASA/normal conveys no more information than the
  122.    present A-P-E-F scheme.  FTP-2 also introduces the notion of
  123.    Telnet formatted vs. non-print files.  These types are used when
  124.    a Telnet format oriented system is sending a file to an ASA
  125.    oriented one, and the recipient needs to know, not what is coming
  126.    over the net, but how to solve a local file storage problem.  It
  127.    is unnecessary and unfair for hosts to have to negotiate
  128.    something which does not acttually affect what gets sent over the
  129.    net.  It is unnecessary because the sending user process (there
  130.    is no problem if the user process is receiving) need not
  131.    understand what the issue is, it need only make the server
  132.    understand by transmitting a message from the human user to the
  133.    server process.  Any TYPE parameter must be understood by both
  134.    processes even if the user treats it just like some other type.    5c
  135.  
  136.    To take a specific example, if I want to send an ASCII file to a
  137.    360, my FTP user program needs to have built into it the
  138.    knowledge that there are two TYPEs which are really the same, AN
  139.    and AT in the FTP-2 notation. If tomorrow someone needs to know
  140.    the ultimate use of a binary file (for instance, the old PDP-6
  141.    DECtape format stores dump files differently from ordinary data
  142.    files), I will have to add another piece of information to my FTP
  143.    user and server (maybe they try to read such a file from me).
  144.    Instead, information which affects only the RECIPIENT of a file,
  145.    and not the format AS SENT OVER THE NET, should be specified in
  146.    some form which the sending process can ignore.  This is what the
  147.    SRVR command should be used for.                                   5d
  148.  
  149.    If a user at a 360 wants to retrieve a "Telnet print file" from
  150.    another system, he might tell his FTP user process something like  5e
  151.  
  152.       TYPE A
  153.       DISP PRINT
  154.       RETR FOO etc.                                                  5e1
  155.  
  156.    (or whatever syntax they use in their FTP).  If a user at a 10
  157.    wants to send such a file to a 360, he would say                   5f
  158.  
  159.       TYPE A
  160.  
  161.  
  162.  
  163.  
  164.  
  165.                                    3
  166.  
  167. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  168. One More Try on the FTP
  169.  
  170.  
  171.  
  172.       SRVR PRINT
  173.       STOR FOO etc.                                                  5f1
  174.  
  175.    His FTP user program would send on the SRVR command without
  176.    comment. Suppose that the transformation is one which might be
  177.    used in either direction between the same two hosts.  (This is
  178.    not the case for the Telnet print file thing because two 360s
  179.    would be using ASA format.)  Then the user process could accept
  180.    the equivalent of DISP PRINT from the user, and if the transfer
  181.    turned out to be a STOR it would decide to send SRVR PRINT first.
  182.    In this way the FTP user program can be written so that the human
  183.    user types the same command regardless of the direction of
  184.    transfer.                                                          5g
  185.  
  186.    Thus, FTP servers which care about the distinction between Telnet
  187.    print and non-print could implement SRVR N and SRVR T.  Ideally
  188.    the SRVR parameters should be registered with Jon Postel to avoid
  189.    conflicts, although it is not a disaster if two sites use the
  190.    same parameter for different things.  I suggest that parameters
  191.    be allowed to be more than one letter, and that an initial letter
  192.    X be used for really local idiosyncracies.  The following should
  193.    be considered as registered:                                       5h
  194.  
  195.       T - Telnet print file                                          5h1
  196.  
  197.       N - Normal.                                                    5h2
  198.  
  199.          Means to turn off any previous SRVR in effect. (This makes
  200.          "non-print" the default case, rather than
  201.          making "Telnet print" and "non-print" equal.  It is
  202.          probably a good idea if a user program can count on
  203.          being able to turn off an earlier SRVR without having
  204.          to know a specific inverse for it.  Servers which do not
  205.          implement any other SRVR parameters need not implement
  206.          SRVR N either; user processes shouldn't send SRVR N
  207.          just for the hell of it.)
  208.  
  209.    3.  FTP-2 reshuffles reply codes somewhat.  There have been four
  210.    attempts altogether, that I know of, at specifying a list of
  211.    reply codes: RFCs 354 and 454 for FTP-1, and RFCs 542 and 640 for
  212.    FTP-2. There is not much to choose from among the first three of
  213.    these, which are basically the same, except for a slight increase
  214.    in specificity each time through, e.g., the introduction of reply
  215.  
  216.  
  217.  
  218.  
  219.  
  220.                                    4
  221.  
  222. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  223. One More Try on the FTP
  224.  
  225.  
  226.  
  227.    code 456 for a rename which fails because a file of the same
  228.    (new) name already exists.  This increased specificity of reply
  229.    codes doesn't seem to be much of a virtue; if a rename operation
  230.    fails, it is the human user, not the FTP user program, who needs
  231.    to know that it was because of a name conflict rather than some
  232.    other file system error.  I am all for putting such information
  233.    in the text part of FTP replies.  Some real problems are actually
  234.    addressed in the reply code revision of RFC 640, in which the
  235.    basic scheme for assigning reply code numbers is more rational
  236.    than either the FTP-1 scheme or the original FTP-2 scheme.
  237.    However, I think that most of the benefits of RFC 640 can be
  238.    obtained in a way which does not require cataclysmic
  239.    reprogramming.  More on this below.                                5i
  240.  
  241.    4.  FTP-2 was established by a duly constituted ARPAnet committee
  242.    and we are duty-bound to implement it.  I don't suppose anyone
  243.    would actually put it that baldly, but I've heard things which
  244.    amounted to that.  It's silly.                                     5j
  245.  
  246.    5.  FTP-2 specifies default sockets for the data connection.
  247.    Most places use the default sockets already anyway, and it is
  248.    easy enough to ignore the 255 message if you want to.  This is a
  249.    security issue, of course, and I'm afraid that I can't work up
  250.    much excitement about helping the CIA keep track of what anti-war
  251.    demonstrations I attended in 1968 and which Vietnamese hamlets to
  252.    bomb for the greatest strategic effect even if they do pay my
  253.    salary indirectly.  I could rave about this subject for pages,
  254.    and probably will if I ever get around to writing an argument
  255.    against MAIL-2, but for now let me just get one anecdote off my
  256.    chest:  I have access to an account at an ARPAnet host because I
  257.    am responsible at my own site for local maintenance of a program
  258.    which was written by, and is maintained by, someone at the other
  259.    site.  However, the other site doesn't really trust us outsiders
  260.    (the account is shared by people in my position at several other
  261.    hosts) to protect their vital system security, so every week they
  262.    run a computer program to generate a new random password for the
  263.    account (last week's was HRHPUK) and notify us all by network
  264.    mail.  Well, on my system and at least one of the others, that
  265.    mail isn't read protected.  I delete my mail when I read it, but
  266.    since it is hard enough remembering HRHPUK without them changing
  267.    it every week, I naturally write it in a file on our system.
  268.    That file could in principle be read protected but it isn't,
  269.    since sometimes I'm in someone else's office when I want to use
  270.  
  271.  
  272.  
  273.  
  274.  
  275.                                    5
  276.  
  277. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  278. One More Try on the FTP
  279.  
  280.  
  281.  
  282.    it, and the other passwords in it are for open guest accounts
  283.    which are widely known.  Moral #1: Security freaks are pretty
  284.    weird.  Moral #2: If you have a secret don't keep it on the
  285.    ARPAnet.  (In the past week I have heard about two newly
  286.    discovered holes in TENEX security.)                               5k
  287.  
  288.    6.  FTP-2 is available online and FTP-1 isn't, so new hosts can't
  289.    find out how to do it.  Aargh!!!  What a reason for doing
  290.    anything! Surely it would be less costly for someone to type it
  291.    in again than for everyone to reprogram.  Meanwhile these new
  292.    hosts can ask Jon or Geoff or Bobby or even me for help in
  293.    getting FTP up.                                                    5l
  294.  
  295.    7.  FTP-2 has some changes to the strange MODEs and STRUs.  This
  296.    is another thing I can't get too excited about.  We support only
  297.    MODE S and STRU F and that will probably still be true even if we
  298.    are forced into FTP-2.  If the relatively few people who do very
  299.    large file transfers need to improve the restart capability, they
  300.    can do so within FTP-1 without impacting the rest of us.  The
  301.    recent implementation of paged file transfers by TENEX shows that
  302.    problems of individual systems can be solved within the FTP-1
  303.    framework. If the IBM people have some problem about record
  304.    structure in FTP-1, for example, let them solve it in FTP-1, and
  305.    whatever the solution is, nobody who isn't affected has to
  306.    reprogram.                                                         5m
  307.  
  308. Well, to sum up, I am pretty happy with the success I've had
  309. transferring files around the network the way things are.  When I do
  310. run into trouble it's generally because some particular host hasn't
  311. implemented some particular feature of FTP-1, and there's no reason
  312. to suppose they'll do it any faster if they also have to convert to
  313. FTP-2 at the same time.  The main thing about FTP-2, as I said at
  314. the beginning, is that its existence is an excuse for not solving
  315. problems in FTP-1.  Some such problems are quite trivial except for
  316. the fact that people are reluctant to go against anything in the
  317. protocol document, as if the latter were the Holy Writ.  A few
  318. actually require some coordinated effort.  Here is my problem list:    6
  319.  
  320.    1.  It is almost true that an FTP user program can understand
  321.    reply codes by the following simple algorithm:                     6a
  322.  
  323.       a. Replies starting with 0 or 1 should be typed out and
  324.       otherwise ignored.                                             6a1
  325.  
  326.  
  327.  
  328.  
  329.  
  330.                                    6
  331.  
  332. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  333. One More Try on the FTP
  334.  
  335.  
  336.  
  337.       b. Replies starting with 2 indicate success (of this step or
  338.       of the whole operation, depending on the command).             6a2
  339.  
  340.       c. Replies starting with 4 or 5 indicate failure of the
  341.       command.                                                       6a3
  342.  
  343.       d. Replies starting with 3 are only recognized in three cases:
  344.       the initial 300 message, the 330 password request, and the
  345.       350 MAIL response.  (Note that the user program need not
  346.       distinguish which 300 message it got, merely whether or not it
  347.       is expecting one right now.)                                   6a4
  348.  
  349.    The only real problem with this, aside from bugs in a few servers
  350.    whose maintainers tell me they're working on it, is the HELP
  351.    command, which is not in the original protocol and which returns
  352.    0xx, 1xx, or 2xx depending on the server.  (Sometimes more than
  353.    one message is returned.) The word from one network protocol
  354.    expert at BBN is that (a) 050 or 030 is the correct response to
  355.    HELP, and (b) there is a perfectly good mechanism in the protocol
  356.    for multi-line responses.  Unfortunately this does not do much
  357.    good in dealing with reality.  There seems to be a uniform
  358.    procedure for handling the STAT command:                           6b
  359.  
  360.       151 information
  361.       151 information
  362.       151 ...
  363.       151 information
  364.       200 END OF STATUS                                              6b1
  365.  
  366.    which fits right in with the above algorithm.  This is despite
  367.    the fact that 1xx is supposed to constitute a positive response
  368.    to a command like STAT, so that according to RFC 354 it ought to
  369.    be                                                                 6c
  370.  
  371.       151-information
  372.       information
  373.       ...
  374.       151 information                                                6c1
  375.  
  376.    instead.  RFC 414, which approves of the 200 reply for STAT, also
  377.    gives 200 for HELP.  (It seems to me, by the way, that 050 and
  378.    030 aren't good enough as responses to HELP since they
  379.    "constitute neither a positive nor a negative acknowledgement" of
  380.  
  381.  
  382.  
  383.  
  384.  
  385.                                    7
  386.  
  387. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  388. One More Try on the FTP
  389.  
  390.  
  391.  
  392.    the HELP command and thus don't tell the user program when it
  393.    ought to ask the human user what to do next.)  I suggest that,
  394.    despite RFC 354, a 200 response be given by all servers at the
  395.    end of whatever other HELP it gives as of, let's say, June 1.
  396.    The alternatives are either to let the current rather chaotic
  397.    situation continue forever while waiting for FTP-2, or to try to
  398.    standardize everyone on a multi-line 1xx for both HELP and STAT.
  399.    I'm against changing STAT, which works perfectly for everyone as
  400.    far as I can tell, and it should be clear that I'm against
  401.    waiting for FTP-2.  Unfortunately there is no real mechanism for
  402.    "officially" adopting my plan, but I bet if TENEX does it on June
  403.    1 the rest of the world will come along.                           6d
  404.  
  405.    2.  Another reply code problem is the use of 9xx for
  406.    "experimental" replies not in the protocol.  This includes the
  407.    BBN mail-forwarding message and one other that I know of.  This
  408.    procedure is sanctioned by RFC 385, but it seems like a bad idea
  409.    to me.  For one thing, the user program has no way of knowing
  410.    whether the reply is positive, negative, or irrelevant.  The
  411.    examples I've been burned by all should have been 0xx messages.
  412.    I propose that all such messages be given codes in the 000-599
  413.    range, chosen to fit the scheme given above for interpreting
  414.    reply codes.  x9x or xx9 could be used to indicate experiments.    6e
  415.  
  416.    3.  One more on reply codes: RFC 630 (the one about the TENEX mod
  417.    to the reply codes for MAIL and MLFL) raises the issue of
  418.    "temporary" versus "permanent" failures within the 4xx category.
  419.    RFC 640 deals with this question in the FTP-2 context by changing
  420.    the meaning of 4xx and 5xx so that the former are for temporary
  421.    errors and the latter are for permanent errors.  I like this
  422.    idea, and I think it could easily be adapted for FTP-1 use in a
  423.    way which would allow people to ignore the change and still win.
  424.    At present, I believe that the only program which attempts to
  425.    distinguish between temporary and permanent errors is the TENEX
  426.    mailer.  For other programs, no distinction is currently made
  427.    between 4xx and 5xx responses; both indicate failure, and any
  428.    retrials are done by the human user based on the text part of the
  429.    message.  A specific set of changes to the reply codes is
  430.    proposed below.                                                    6f
  431.  
  432.    Perhaps I should make a few more points about RFC 640, since it's
  433.    the best thing about FTP-2 and the only argument for it I find at
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.                                    8
  441.  
  442. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  443. One More Try on the FTP
  444.  
  445.  
  446.  
  447.    all convincing.  Let me try to pick out the virtues of 640 and
  448.    indicate how they might be achieved in FTP-1.                      6g
  449.  
  450.       a.  The 3xx category is used uniformly for "positive
  451.       intermediate replies" where further negotiation in the Telnet
  452.       connection is required, as for RNFR.  I'm afraid this one
  453.       can't be changed without affecting existing user programs.
  454.       (One of my goals here is to enable existing user programs to
  455.       work while some servers continue as now and others adopt the
  456.       suggestions I make below.) However, although this 3xx idea is
  457.       logically pleasing, it is not really necessary for a
  458.       simple-minded user program to be able to interpret replies.
  459.       The only really new 3xx in RFC 640 is the 350 code for RNFR.
  460.       But this would only be a real
  461.       improvement for the user program if there were also a 2xx code
  462.       which might be returned after RNFR, which is not the case.
  463.       640 also abolishes the 300 initial connection message with
  464.       220, but again there is clearly no conflict here.              6g1
  465.  
  466.       b.  The use of 1xx is expanded to include what is now the 250
  467.       code for the beginning of a file transfer.  The idea is that a
  468.       1xx message doesn't affect the state of the user process, but
  469.       this is not really true.  Consider the file transfer commands.
  470.       The state diagram on page 13 of RFC 640 is slightly
  471.       misleading. It appears as if 1xx replies are simply ignored by
  472.       the user program.  In reality, that little loop hides a lot of
  473.       work: the file transfer itself!  If the server replied to the
  474.       file transfer command immediately with a 2xx message, it would
  475.       be a bug in the server, not a successful transfer.  The real
  476.       state diagram is more like                                     6g2
  477.  
  478.          B --> cmd --> W --> 1 --> W --> 2 --> S
  479.  
  480.       (with branches out from the "W"s for bad replies).  It should
  481.       be clear from this diagram that the user program, if it trusts
  482.       the server to know what it's doing, can expect a 2xx instead
  483.       of the 1xx without getting confused, since it knows which of
  484.       the W states it's in.  In fact, the use of 1xx in file
  485.       transfer is very different from its other uses, which are
  486.       indeed more like the 0xx and 1xx replies in FTP-1.  I'd call
  487.       this particular point a bug in RFC 640.                        6g3
  488.  
  489.       c.  Automatic programs which use FTP (like mailers) can decide
  490.  
  491.  
  492.  
  493.  
  494.  
  495.                                    9
  496.  
  497. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  498. One More Try on the FTP
  499.  
  500.  
  501.  
  502.       whether to queue or abandon an unsuccessful transfer based on
  503.       the distinction between 4xx and 5xx codes.  I like this
  504.       idea, although those temporary errors virtually never happen
  505.       in real life.  This could be accomplished in FTP-1 by moving
  506.       many of the 4xx replies to 5xx.  Mailers would be modified to
  507.       use the first digit to decide whether or not to retry.  This
  508.       scheme does not cause any catastrophes if some server is slow
  509.       in converting; it merely leads to unnecessary retries.  A few
  510.       CPU cycles would be wasted in the month following the official
  511.       switch.  Thus, this feature is very different from (a) and
  512.       (b), which could lead to catastrophic failures if not
  513.       implemented all at once.  (Yes, I know that FTP-2 is supposed
  514.       to be done on a different ICP socket.  I am not discussing
  515.       FTP-2 but whether its virtues can be transferred to FTP-1.)
  516.       The specific codes involved are listed below.                  6g4
  517.  
  518.       d.  The use of the second digit to indicate the type of
  519.       message.  (The proposed division is not totally clean;
  520.       for example, why is 150 ("file status okay; about to open
  521.       data connection") considered to be more about the file
  522.       system than about the data connection?)  This can easily
  523.       be done, since the second digit is not currently important
  524.       to any user process--the TENEX mailer is, in this plan,
  525.       already due for modification because of (c).  Since this
  526.       is mostly an aesthetic point, I'm hesitant to do it if it
  527.       would be difficult for anyone.  In particular, I would want to
  528.       leave the 25x messages alone, in case some user programs
  529.       distinguish these.  This is especially likely for the ones
  530.       which are entirely meant for the program: 251 and 255.
  531.       Therefore I propose that if this idea is adopted in FTP-1
  532.       the meanings of x2x and x5x be interchanged.  This proposal is
  533.       reflected in the specific list below.                          6g5
  534.  
  535. Let me summarize the specific changes to FTP-1 I'd like to see made,
  536. most of which are merely documentation changes to reflect reality:     7
  537.  
  538.    1.  HELP should return 200.  All commands should return 2xx if
  539.    successful, and I believe all do except HELP.                      7a
  540.  
  541.    2.  The definition of 1xx messages should be changed to read:
  542.    "Informative replies to status inquiries.  These constitute
  543.    neither a positive nor a negative acknowledgment."                 7b
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.                                    10
  551.  
  552. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  553. One More Try on the FTP
  554.  
  555.  
  556.  
  557.    3.  Experimental reply codes should be of the form x9x or xx9,
  558.    where the first digit is chosen to reflect the significance of
  559.    the reply to automated user programs.  Reply codes greater than
  560.    599 are not permitted.  The xx9 form should be used if the reply
  561.    falls into one of the existing categories for the second digit.
  562.    User programs are encouraged to determine the significance of the
  563.    reply from the first digit, rather than requiring a specific
  564.    reply code, when possible.                                         7c
  565.  
  566.    4.  The STAT command with no argument is considered a request for
  567.    a directory listing for the current working directory, except
  568.    that it may be given along with TELNET SYNCH while a transfer is
  569.    in progress, in which case it is a request for the status of that
  570.    transfer.  (Everyone seems to do the first part of this.  I'm not
  571.    sure if anyone actually implements the second.  This is just
  572.    getting the protocol to agree with reality.)  The reply to a STAT
  573.    command should be zero or more 1xx messages followed by a 200.     7d
  574.  
  575.    5.  TYPEs P and F mean that the source file contains ASA control
  576.    characters and that the recipient program should reformat it if
  577.    necessary.  Servers which care about Telnet-print vs. non-print
  578.    should implement SRVR T and SRVR N.  All user processes should
  579.    provide a way for the human user to specify an arbitrary SRVR
  580.    command.                                                           7e
  581.  
  582.    6.  (This is just a resolution of a loose end in documentation.)
  583.    Nested reply codes are not allowed.  I don't think this really
  584.    needs more discussion; they never happen and can't possibly work,
  585.    and FTP user programs shouldn't have to worry about them.          7f
  586.  
  587.    Here is a list of the current FTP-1 replies, and how they should
  588.    be renumbered for the new scheme.  The changes from 4xx to 5xx
  589.    should be REQUIRED as of June 1; changes in the second or third
  590.    digit are not so important.  (As explained above, it will not be
  591.    catastrophic even if some hosts do not meet the requirement.) The
  592.    list also contains one new possible reply adapted from RFC 640.
  593.    Replies invented in RFC 454 are so noted; since some of them are
  594.    for commands largely not implemented like REIN, they may be
  595.    irrelevant.                                                        7g
  596.  
  597.       OLD   NEW   TEXT
  598.                                                                      7g1
  599.       0x0   0x0   (These messages are not very well defined nor very
  600.  
  601.  
  602.  
  603.  
  604.  
  605.                                    11
  606.  
  607. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  608. One More Try on the FTP
  609.  
  610.  
  611.  
  612.                   important.  Servers should use their judgment.)
  613.       100   110   System status reply.  (Since nobody does STAT as
  614.       in
  615.                   the protocol, this may be a moot point.)
  616.       110   111   System busy doing...  (This RFC 454 message could
  617.                   easily be considered an example of the one above,
  618.                   but since the 454 authors want to distinguish it,
  619.                   here it is in another number.)
  620.       150   150   "File status reply."  (If this were really that,
  621.       it
  622.                   would be switched to 120, but I believe what is
  623.       meant
  624.                   is the response to a bare STAT in mid-transfer,
  625.       which
  626.                   is more a connection status reply than a file
  627.       status
  628.                   reply.)
  629.       151   121   Directory listing reply.
  630.       200   200   Last command ok.
  631.       201   251   ABOR ok.                                           7g2
  632.       202   252   ABOR ignored, no transfer in progress.
  633.       new   206   Command ignored, superfluous here.
  634.       230   230   Login complete.
  635.       231   231   Logout complete.  (RFC 454: Closing connection.)
  636.       232   232   Logout command will be processed when transfer is
  637.                   complete.                                          7g3
  638.       233   233   Logout complete, parameters reinitialized.  (RFC
  639.       454               for REIN)                                    7g4
  640.       250   250   Transfer started correctly.
  641.       251   251   MARK yyyy = mmmm
  642.       252   252   Transfer completed ok.
  643.       253   223   Rename ok.
  644.       254   224   Delete ok.
  645.       255   255   SOCK nnnn
  646.       256   256   Mail completed ok.
  647.       300   300   Connection greeting
  648.       301   301   Command incomplete (no crlf)
  649.       330   330   Enter password                                     7g5
  650.       331   331   Enter account (RFC 454)
  651.       350   350   Enter mail.                                        7g6
  652.       400   huh?  "This service not implemented."  I don't
  653.       understand
  654.                   this; how does it differ from 506?  If it means no
  655.  
  656.  
  657.  
  658.  
  659.  
  660.                                    12
  661.  
  662. NWG/RFC# 691                                    BH 6-JUN-75 23:15  32700
  663. One More Try on the FTP
  664.  
  665.  
  666.  
  667.       FTP
  668.                   at all, who gave the message?  Flush.              7g7
  669.       401   451   Service not accepting users now, goodbye.
  670.       430   430   Foo, you are a password hacker!
  671.       431   531   Invalid user or password.
  672.       432   532   User invalid for this service.
  673.       433   533   Need account to write files.
  674.       434   454   Logout by operator.
  675.       435   455   Logout by system.
  676.       436   456   Service shutting down.
  677.       450   520   File not found.
  678.       451   521   Access denied.
  679.       452   452   Transfer incomplete, connection closed.            7g8
  680.       453   423   Transfer incomplete, insufficient storage space.
  681.       454   454   Can't connect to your socket.
  682.       455   425   Random file system error (RFC 454)                 7g9
  683.       456   526   Name duplication, rename failed (RFC 454)
  684.       457   557   Bad transfer parameters (TYPE, BYTE, etc) (RFC
  685.       454)
  686.       500   500   Command gibberish.
  687.       501   501   Argument gibberish.
  688.       502   502   Argument missing.
  689.       503   503   Arguments conflict.
  690.       504   504   You can't get there from here.
  691.       505   505   Command conflicts with previous command.
  692.       506   506   Action not implemented.
  693.       507   507   Some other problem.  (RFC 454)
  694.       550   520   Bad syntax in pathname.  (RFC454)                 7g10
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.                                    13